Nowadays, almost all computing devices within the workplace are tied to a network. Many large and small companies alike employ a network to disseminate information throughout the organization. Typical uses of networks include linking multiple computers throughout the organization together, providing access to company wide information via a corporate intranet or the Internet, and connecting multiple computers to a specific printer or fax machine. The pervasive use of networks within the workplace can also be seen frequently within many households, where computers are commonly linked to a network, such as the Internet, to provide WEB access and e-mail messaging services.
In networked computing environments such as those described above, it is often desirable for a user to determine the status of a process that was initiated by their computer, such as the status of a document sent to a remote printer. According to many conventional computing systems, the status of the print job can be easily determined and even viewed with a simple network printer status tool that monitors the printing process as it is in action. Many other types of processes can also be initiated and monitored via a network in a well-known and conventional manner, as long as the tool used to communicate the status information is written specifically for that process. In the example of the print job, to communicate print status, the tool performing this action is programmed specifically for this purpose. The same print status tool cannot communicate the status of other tasks such as the delivery of an e-mail message or the detection of a computer virus. Thus, the client that invoked the print job status tool cannot use the same tool to view the status of a separate and independent process.
Because of this limitation, obtaining status information related to one or more independent processes requires a customized tool for each individual process. This requirement is undesirable, however, in situations where the overall process involves multiple independent sub-processes, such as in a distributed computing/networking environment.
The distributed compilation of a large software program provides a good example of how related, yet independently executed processes or tasks can occur within a distributed computing environment. In this example, several developers, often from different groups within an organization, share the responsibility of successfully compiling a software application. This procedure requires that each developer compile their developed source code, and then they must merge their code with that of the other developers to yield a fully operational end product. In order to successfully accomplish this, each developer must be able to monitor any one of the distributed compile processes at any time (i.e., another developer's compile process). However, due to the limitations imposed by conventional monitoring systems, there is no easy way for developers to monitor the status of each independent process in execution. The developer is only able to obtain the status information relative to his or her own compile process.
To overcome the limitations of conventional status information retrieval systems, a convenient means of determining the status of one or more independently executing processes is required. Also, a convenient means of retrieving status information related to the executable processes from any location is needed.